@JsonAlias Jackson-এর একটি অ্যানোটেশন, যা একটি ফিল্ডের জন্য একাধিক JSON ফিল্ড নাম ম্যানেজ করতে ব্যবহৃত হয়। এটি JSON-এ যদি একাধিক নাম থেকে একটি Java ফিল্ড মাপ করতে চান, তখন এই অ্যানোটেশন ব্যবহার করা হয়। এটি মূলত Deserialization-এ কার্যকরী, যেখানে একাধিক নাম থেকে একটি ফিল্ড মান পাওয়া যায়।
@JsonAlias এর বৈশিষ্ট্য
- Multiple Aliases: একটি ফিল্ডের জন্য একাধিক নাম সমর্থন করতে সক্ষম।
- Deserialization: JSON থেকে Java Object তৈরি করার সময় এটি কাজ করে, অর্থাৎ একাধিক JSON ফিল্ড নাম একটি Java ফিল্ডে মান ম্যাপ করতে ব্যবহার হয়।
- Backward Compatibility: বিভিন্ন সময় বা সংস্করণে পরিবর্তিত ফিল্ড নাম সাপোর্ট করতে এটি সাহায্য করে।
@JsonAlias ব্যবহার করার উদাহরণ
1. Multiple JSON Field Names for the Same Java Field
যখন একটি Java ফিল্ডের জন্য বিভিন্ন JSON ফিল্ড নাম থাকে, তখন @JsonAlias ব্যবহার করা হয়।
Java Class Example:
import com.fasterxml.jackson.annotation.JsonAlias;
public class User {
@JsonAlias({"user_id", "id", "userID"})
private int id;
private String name;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasExample {
public static void main(String[] args) throws Exception {
String json = "{\"user_id\":1, \"name\":\"Rahim\"}";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println("User ID: " + user.getId());
System.out.println("User Name: " + user.getName());
}
}
JSON Input Example:
{
"user_id": 1,
"name": "Rahim"
}
Output:
User ID: 1
User Name: Rahim
এখানে, @JsonAlias({"user_id", "id", "userID"}) ব্যবহার করা হয়েছে, যার ফলে user_id, id, এবং userID JSON ফিল্ড নামগুলো Java id ফিল্ডের সাথে ম্যাপ হবে। আপনি যেকোনো এক নাম ব্যবহার করে JSON ডেটা পাঠাতে পারেন এবং সেটি সঠিকভাবে Java ফিল্ডে মাপ হবে।
@JsonAlias এর উপকারিতা
- Multiple Field Names Support:
- একাধিক নামের জন্য একটি ফিল্ড ম্যাপ করা যায়, যেমন যদি API-তে কয়েকটি ভিন্ন সংস্করণে একাধিক নাম ব্যবহৃত হয়ে থাকে।
- Backward Compatibility:
- যখন API সংস্করণের মধ্যে JSON ফিল্ড নাম পরিবর্তন হয়, তখন আগের নামের সাথে নতুন নাম ম্যাপ করার জন্য
@JsonAliasব্যবহার করা যায়।
- যখন API সংস্করণের মধ্যে JSON ফিল্ড নাম পরিবর্তন হয়, তখন আগের নামের সাথে নতুন নাম ম্যাপ করার জন্য
- Ease of Integration:
- বিভিন্ন JSON নাম থেকে একটি ফিল্ডের মান সংগ্রহ করে, কোডে অতিরিক্ত পরিবর্তন ছাড়াই বিভিন্ন ফরম্যাটের JSON-এর সাথে কাজ করা যায়।
@JsonAlias ব্যবহারের অন্যান্য উদাহরণ
2. Multiple Aliases for a Field
import com.fasterxml.jackson.annotation.JsonAlias;
public class Employee {
@JsonAlias({"emp_id", "employee_id"})
private int id;
private String name;
// Getters and Setters
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasExample {
public static void main(String[] args) throws Exception {
String json = "{\"emp_id\": 101, \"name\":\"John Doe\"}";
ObjectMapper mapper = new ObjectMapper();
Employee employee = mapper.readValue(json, Employee.class);
System.out.println("Employee ID: " + employee.getId());
System.out.println("Employee Name: " + employee.getName());
}
}
JSON Input Example:
{
"emp_id": 101,
"name": "John Doe"
}
Output:
Employee ID: 101
Employee Name: John Doe
@JsonAlias এবং @JsonProperty এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | @JsonAlias | @JsonProperty |
|---|---|---|
| প্রয়োগের উদ্দেশ্য | একাধিক JSON ফিল্ড নাম একটি Java ফিল্ডে মাপ করার জন্য | JSON ফিল্ডের নাম নির্ধারণ এবং প্রয়োজনীয়তা নিশ্চিত করার জন্য |
| বিভিন্ন নাম সাপোর্ট | একাধিক নামের জন্য সমর্থন | একক নাম নির্ধারণ করে। |
| Serialization | @JsonAlias শুধুমাত্র Deserialization-এর জন্য ব্যবহৃত | @JsonProperty Serialization এবং Deserialization উভয়ের জন্য ব্যবহৃত |
| Backward Compatibility | একাধিক সংস্করণের JSON ফিল্ড নাম সাপোর্ট করতে সাহায্য করে | ফিল্ড নাম কাস্টমাইজ করতে সাহায্য করে। |
@JsonAliasহল একটি শক্তিশালী টুল যা JSON ফিল্ডের একাধিক নামকে এক Java ফিল্ডের সাথে ম্যাপ করতে সহায়তা করে।- এটি Backward Compatibility এবং Multiple Field Name Support নিশ্চিত করতে ব্যবহৃত হয়।
- JSON API Evolution-এর ক্ষেত্রে, যখন ফিল্ড নাম পরিবর্তিত হয়, তখন
@JsonAliasব্যবহার করে আপনি আগের নামের সাথে নতুন নাম ম্যাপ করতে পারেন, যার ফলে কোডে কম পরিবর্তন করতে হয়।
@JsonAlias Jackson এর JSON Deserialization এর জন্য একটি খুবই কার্যকরী অ্যানোটেশন, যা একাধিক JSON ফিল্ড নাম একটি Java ফিল্ডের সাথে মাপ করার জন্য ব্যবহৃত হয়।
Read more